package apiWeb

import (
	request "ZHONGYIHANGYAN/bean/request"
	evaluateTask "ZHONGYIHANGYAN/business/evaluateTask"
	"ZHONGYIHANGYAN/web"

	"github.com/gin-gonic/gin"

	"fmt"
)

func (api *Api) EvaluateTaskRouters(g *gin.RouterGroup) {
	routerG := g.Group("/evaluateTask")
	{
		// 获取评价任务列表
		routerG.POST("/getEvaluateTaskList", web.NewWebRouter(api.getEvaluateTaskList).Func)
		// 添加或修改评价任务
		routerG.POST("/addOrUpdateEvaluateTask", web.NewWebRouter(api.addOrUpdateEvaluateTask).Func)
		// 删除评价任务
		routerG.POST("/deleteEvaluateTask", web.NewWebRouter(api.deleteEvaluateTask).Func)
		// 获取评价任务详情
		routerG.POST("/getEvaluateTaskDetail", web.NewWebRouter(api.getEvaluateTaskDetail).Func)
		// 更新评价任务状态
		routerG.POST("/updateEvaluateTaskStatus", web.NewWebRouter(api.updateEvaluateTaskStatus).Func)

		// 获取评价结果
		routerG.POST("/getEvaluateResult", web.NewWebRouter(api.getEvaluateResult).Func)
		// 添加或修改评价结果
		routerG.POST("/addOrUpdateEvaluateResult", web.NewWebRouter(api.addOrUpdateEvaluateResult).Func)
	}
}

func (api *Api) InitEvaluateTaskRouter() error {
	api.evaluateTaskManage = evaluateTask.Manage()
	api.web.RegRouters(api.EvaluateTaskRouters)
	return nil
}

// 获取评价任务列表
func (api *Api) getEvaluateTaskList(c *gin.Context, replayData *interface{}) error {
	query := request.GetEvaluateTaskListQuery{}
	if err := api.web.GetPayload(c, &query); err != nil {
		return err
	}
	infoList, err := api.evaluateTaskManage.GetEvaluateTaskList(&query)
	if err != nil {
		return nil
	}
	*replayData = infoList
	return nil
}

// 添加或修改评价任务
func (api *Api) addOrUpdateEvaluateTask(c *gin.Context, replayData *interface{}) error {
	query := request.AddOrUpdateEvaluateTaskQuery{}
	if err := api.web.GetPayload(c, &query); err != nil {
		return err
	}
	taskId,err := api.evaluateTaskManage.AddOrUpdateEvaluateTask(&query)
	if err != nil {
		return err
	}
	*replayData = taskId
	return nil
}

// 删除评价任务
func (api *Api) deleteEvaluateTask(c *gin.Context, replayData *interface{}) error {
	query := request.DeleteEvaluateTaskQuery{}
	if err := api.web.GetPayload(c, &query); err != nil {
		return err
	}
	if len(query.EvaluateTaskIds) == 0 {
		return fmt.Errorf("请传入需要删除的评价任务id")
	}
	err := api.evaluateTaskManage.DeleteEvaluateTask(query.EvaluateTaskIds)
	if err != nil {
		return err
	}
	*replayData = nil
	return nil
}

// 获取评价任务详情
func (api *Api) getEvaluateTaskDetail(c *gin.Context, replayData *interface{}) error {
	query := request.GetEvaluateTaskDetailQuery{}
	if err := api.web.GetPayload(c, &query); err != nil {
		return err
	}

	if query.EvaluateTaskId == "" {
		return fmt.Errorf("请传入需要获取的评价任务id")
	}
	info, err := api.evaluateTaskManage.GetEvaluateTaskDetail(&query)
	if err != nil {
		return nil
	}
	*replayData = info
	return nil
}

// 更新评价任务状态
func (api *Api) updateEvaluateTaskStatus(c *gin.Context, replayData *interface{}) error {
	query := request.UpdateEvaluateTaskStatusQuery{}
	if err := api.web.GetPayload(c, &query); err != nil {
		return err
	}
	err := api.evaluateTaskManage.UpdateEvaluateTaskStatus(&query)
	if err != nil {
		return err
	}
	*replayData = nil
	return nil
}

// 获取评价结果
func (api *Api) getEvaluateResult(c *gin.Context, replayData *interface{}) error {
	query := request.GetEvaluateResultQuery{}
	if err := api.web.GetPayload(c, &query); err != nil {
		return err
	}
	if query.EvaluateTaskId == "" {
		return fmt.Errorf("请传入需要获取的评价任务id")
	}
	info, err := api.evaluateTaskManage.GetEvaluateResult(&query)
	if err != nil {
		return nil
	}
	*replayData = info
	return nil
}

// 添加或修改评价结果
func (api *Api) addOrUpdateEvaluateResult(c *gin.Context, replayData *interface{}) error {
	query := request.AddOrUpdateEvaluateResultQuery{}
	if err := api.web.GetPayload(c, &query); err != nil {
		return err
	}
	err := api.evaluateTaskManage.AddOrUpdateEvaluateResult(&query)
	if err != nil {
		return err
	}
	*replayData = nil
	return nil
}
